package sifeap.bl.ejb.usuarios;

import java.util.List;

import javax.ejb.Local;

import sifeap.entities.usuarios.PreguntaSeguridad;
import sifeap.entities.usuarios.Usuario;
import sifeap.entities.usuarios.valueobject.UsuarioVO;
import sifeap.exception.SifeapException;

@Local
public interface UsuarioBLLocal {
	/**
	 * Crea un usuario nuevo
	 * @param usuarioVo Value Object de usuario.
	 * @return 0 si se produce un error. 1 si se guarda correctamente el usuario. 
	 * 2 si el usuario ya existe. 3 Si las contrasenas no concuerda.
	 * @throws SifeapException
	 */
	public byte crear(UsuarioVO usuarioVo) throws SifeapException;
	
	public List<Usuario> buscarTodos() throws SifeapException;
	
	public boolean modificar(Usuario usuario)throws SifeapException;
	
	public boolean eliminar(Usuario usuario)throws SifeapException;
	
	public Usuario buscar(Object id)throws SifeapException;
	
	public boolean remover(Usuario usuario)throws SifeapException;

	public UsuarioVO buscarPorId(String id) throws SifeapException;

	public List<UsuarioVO> buscarTodosAsociados() throws SifeapException;

	public byte cambiarContrasena(UsuarioVO usuarioVo) throws SifeapException;

	public List<PreguntaSeguridad> buscarTodasPreguntasSeguridad() throws SifeapException;

	public PreguntaSeguridad buscarPreguntaSeguridad(Object id) throws SifeapException;

	public byte habilitarUsuario(Usuario usuario) throws SifeapException;

	public boolean restaurarUsuario(String documento) throws SifeapException;
}
